package com.qiyuexinxi.chat.exception.reg.exception;

/**
 * Description:
 * User: zhouzhou
 * Date: 2019-01-08
 * Time: 14:50
 */

import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Delete;

/**
 * 业务错误码
 * @author jacques
 * @version $Id: BusinessErrorCodeEnum.java, v 0.1 2016年4月28日 下午5:44:00 jacques Exp $
 */
public enum BizErrorCodeEnum implements ErrorCode {

    /** 未指明的异常 */
    UNSPECIFIED("500", "网络异常，请稍后再试"),
    NO_SERVICE("404", "网络异常, 服务器熔断"),

    // 通用异常
    REQUEST_ERROR("400", "入参异常,请检查入参后再次调用"),
    PAGE_NUM_IS_NULL("4001","页码不能为空"),
    PAGE_SIZE_IS_NULL("4002","页数不能为空"),
    TIME_FOEMAT_EXCEPTION("4003","时间转换错误"),
    DOWNLOAD_EXCEPTION("4004","下载文件异常"),
    DELETE_EXCEPTION("4005", "物理删除异常"),
    SERVICE_TYPE_IS_NULL("4006","serviceType 不存在"),
    STATUS_ERROR("4007","状态传入错误"),

    // 登录相关
    SENDING_CODE("1000", "该手机号已发送过验证码，请稍后重试"),
    SENDING_MESSAGE_FAILED("1001", "发送短信失败"),
    PHONE_CODE_REDIS_FAILED("1002", "生成手机验证码缓存redis失败"),
    GET_PHONE_CODE_REDIS_FAILED("1003", "验证码已过期"),
    PHONE_CODE_ERROR("1004", "验证码错误"),
    REGISTER_USER_FAILED("1005", "注册用户失败"),
    REGISTERED("1006", "该手机号已注册"),
    UNREGISTERED("1007", "该手机号未注册"),
    REFERRERCHAT_USER_NOT_EXIST("1008", "推荐人不存在"),
    COMPLETE_INFORMATION_FAILED("1009", "完善信息失败"),
    USER_NOT_EXIST("1010", "用户不存在"),
    PASSWORD_ERROR("1011", "用户或密码错误"),
    PICTURE_IMG_EMPTY("1012", "用户图片为空"),
    PICTURE_IMG_SIZE_ERROR("1013", "用户图片大小错误"),
    PICTURE_IMG_INFO_FAILED("1014", "用户图片上传失败"),
    UPDATE_USER_INFO_FAILED("1015", "修改用户信息失败"),
    BIRTHDAY_ERROR("1016", "出生日期晚于当前时间"),
    //点赞
    ADD_THUMBINFO_FAILED("1017", "增加点赞失败"),
    DELETE_THUMBINFO_FAILED("1018", "取消点赞失败"),
    USERID_NOT_EXIST("1019", "userId请求用户不存在"),
    ATTENTIONUSERID_NOT_EXIST("1020", "attentionUserId判断用户不存在"),






    END("1016", "增加点赞失败");




    /** 错误码 */
    private final String code;

    /** 描述 */
    private final String description;

    /**
     * @param code 错误码
     * @param description 描述
     */
    private BizErrorCodeEnum(final String code, final String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 根据编码查询枚举。
     *
     * @param code 编码。
     * @return 枚举。
     */
    public static BizErrorCodeEnum getByCode(String code) {
        for (BizErrorCodeEnum value : BizErrorCodeEnum.values()) {
            if (StringUtils.equals(code, value.getCode())) {
                return value;
            }
        }
        return UNSPECIFIED;
    }

    /**
     * 枚举是否包含此code
     * @param code 枚举code
     * @return 结果
     */
    public static Boolean contains(String code){
        for (BizErrorCodeEnum value : BizErrorCodeEnum.values()) {
            if (StringUtils.equals(code, value.getCode())) {
                return true;
            }
        }
        return false;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }
}
